import algorithm.ArrayAlgorithm;
import algorithm.RegularExpressionTest;
import algorithm.StringAlgorithm;
import algorithm.VariousAlgorithm;
import data.State;

import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        String test = "aaa,111";
        String[] testArray = test.split(",");
        testStream();
        System.out.println(testArray[1]);

    }


    public static long getTodayStartTime(){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        return calendar.getTime().getTime();
    }

    private static String findJsonValue(String key,String json){
        String regex = "\"" + key + "\": (\"(.*?)\"|(\\d*))";
        Matcher matcher = Pattern.compile(regex).matcher(json);
        String value = null;
        if (matcher.find()) {
            value = matcher.group().split("\\:")[1].replace("\"", "").trim();
            System.out.println(value);
        }
        return value;
    }

    /**
     * 494. 目标和
     * 给你一个整数数组 nums 和一个整数 target 。
     *
     * 向数组中的每个整数前添加 '+' 或 '-' ，然后串联起所有整数，可以构造一个 表达式 ：
     *
     * 例如，nums = [2, 1] ，可以在 2 之前添加 '+' ，在 1 之前添加 '-' ，然后串联起来得到表达式 "+2-1" 。
     * 返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。
     *
     * @param nums
     * @param target
     * @return
     */
    public int findTargetSumWays(int[] nums, int target) {
        int sum = 0;
        for(int num : nums){
            sum += num;
        }
        int diff = sum - target;
        if(diff < 0 || diff % 2 != 0){
            return 0;
        }
        int n = nums.length, neg = diff / 2;
        int[][] dp = new int[n + 1][neg + 1];
        dp[0][0] = 1;
        for(int i = 1; i <= n; i++){
            int num = nums[i - 1];
            for(int j = 0; j <= neg; j++){
                dp[i][j] = dp[i - 1][j];
                if(j >= num){
                    dp[i][j] += dp[i-1][j-num];
                }
            }
        }
        return dp[n][neg];
    }

    static void testStream(){
        List<State> list = new ArrayList<>();
        State state1 = new State(1,1);
        state1.setDate(new Date());
        State state2 = new State(2,2);
        State state3 = new State(3,3);
        list.add(state1);
        list.add(state2);
        list.add(state3);
        State state = list.stream().max(Comparator.comparing(State::getDate)).get();
        System.out.println(state.getX());
    }
}
